//: C18:Ostring.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// Output strstreams
#include <iostream>
#include <strstream>
using namespace std;

int main()
{
    const int sz = 100;
    cout << "type an int, a float and a string:";
    int i;
    float f;
    cin >> i >> f;
    cin >> ws; // Throw away white space
    char buf[sz];
    cin.getline(buf, sz); // Get rest of the line
    // (cin.rdbuf() would be awkward)
    ostrstream os(buf, sz, ios::app);
    os << endl;
    os << "integer = " << i << endl;
    os << "float = " << f << endl;
    os << ends;
    cout << buf;
    cout << os.rdbuf(); // Same effect
    cout << os.rdbuf(); // NOT the same effect
} ///:~
